无向图的深度优先遍历 您所在的位置:网站首页 void dfs 无向图的深度优先遍历

无向图的深度优先遍历

#无向图的深度优先遍历| 来源: 网络整理| 查看: 265

描述

    简单介绍一下图,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的。例如下图的由五个顶点(编号1、2、3、4、5)和五条边(1-2、1-3、1-5、2-4、3-5)组成

    现在从1号顶点开始遍历这个图,遍历是指把图的每一个顶点都访问一次。使用深度有限搜索来遍历这个图将会得到如下结果。

    这五个顶点的访问顺序如下图

    使用深度优先搜索来遍历这个图的过程具体是:首先以一个未被访问过的顶点为起始顶点,沿当前顶点的边走到未访问过的顶点:当没有未访问的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问过。显然,深度优先遍历是沿着图的某一条分支遍历直到末端,然后回溯,在沿着另一条进行同样的遍历,直到所有的顶点都被访问过为止。

思路

    首先用一个二维数组e来存储无向图,如下

    上图中第 i 行 j 列表示顶点 i 到顶点 j 是否有边。1 表示有边,正无穷表示没有边,0 表示自己到自己。

    这种储存方法为邻接矩阵的储存方法

    因为是无向图,所以上面的二维数组是沿对角线堆成的

代码块 深度优先算法代码 void dfs(int cur) { int i = 0; printf("%d ", cur);//输出当前点 sum++; if (sum == n)//如果访问完所有的点则返回 { return; } for (i = 1; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有